package org.aiesec.fortaleza.xmatch.model.service;

import java.io.Serializable;
import java.util.List;

import org.aiesec.fortaleza.xmatch.model.entity.EntityBase;
import org.aiesec.fortaleza.xmatch.model.exceptions.XMatchDomainException;
import org.aiesec.fortaleza.xmatch.model.util.Criteria;

public interface Service<Entity extends EntityBase> {

	Entity save(Entity e) throws XMatchDomainException;

	void remove(Entity e) throws XMatchDomainException;

	Entity findById(Serializable k);

	List<Entity> findAll();

	List<Entity> readByCriteria(Criteria criteria, int initialPos, int finalPos);

	Long totalOfByCriteria(Criteria criteria);

	List<Entity> readByCriteria(Criteria criteria);

}
